Skip to content

Conversation

compiler-errors
Copy link
Member

@compiler-errors compiler-errors commented Mar 25, 2023

Fixes https://github.com/rust-lang/rust/pull/108896/files#r1148450781

r? @BoxyUwU (though feel free to re-roll)


This can be used to create an unsound transmute function with the new solver:

#![feature(specialization)]

trait Default {
   type Id;

   fn intu(&self) -> &Self::Id;
}

impl<T> Default for T {
   default type Id = T;

   fn intu(&self) -> &Self::Id {
        self
   }
}

fn transmute<T: Default<Id = U>, U: Copy>(t: T) -> U {
    *t.intu()
}

use std::num::NonZeroU8;
fn main() {
    let s = transmute::<u8, Option<NonZeroU8>>(0);
    assert_eq!(s, None);
}

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Mar 25, 2023
@rustbot
Copy link
Collaborator

rustbot commented Mar 25, 2023

Some changes occurred to the core trait solver

cc @rust-lang/initiative-trait-system-refactor

@rust-cloud-vms rust-cloud-vms bot force-pushed the new-solver-still-further-specializable branch from f9aad4b to 3310f72 Compare March 26, 2023 00:08
@BoxyUwU
Copy link
Member

BoxyUwU commented Mar 26, 2023

@bors r+ rollup

@bors
Copy link
Collaborator

bors commented Mar 26, 2023

📌 Commit 3310f72 has been approved by BoxyUwU

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 26, 2023
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Mar 26, 2023
…urther-specializable, r=BoxyUwU

Still-further-specializable projections are ambiguous in new solver

Fixes https://github.com/rust-lang/rust/pull/108896/files#r1148450781

r? `@BoxyUwU` (though feel free to re-roll)

---

This can be used to create an unsound transmute function with the new solver:

```rust
#![feature(specialization)]

trait Default {
   type Id;

   fn intu(&self) -> &Self::Id;
}

impl<T> Default for T {
   default type Id = T;

   fn intu(&self) -> &Self::Id {
        self
   }
}

fn transmute<T: Default<Id = U>, U: Copy>(t: T) -> U {
    *t.intu()
}

use std::num::NonZeroU8;
fn main() {
    let s = transmute::<u8, Option<NonZeroU8>>(0);
    assert_eq!(s, None);
}
```
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 26, 2023
…iaskrgr

Rollup of 6 pull requests

Successful merges:

 - rust-lang#109007 (rustdoc: skip `// some variants omitted` if enum is `#[non_exhaustive]`)
 - rust-lang#109593 (Rustdoc Book refer to rustdoc::missing_doc_code_examples. Fixes rust-lang#109592.)
 - rust-lang#109595 (Improve "Auto-hide trait implementation documentation" GUI test)
 - rust-lang#109619 (Still-further-specializable projections are ambiguous in new solver)
 - rust-lang#109620 (Correct typo (`back_box` -> `black_box`))
 - rust-lang#109621 (Refactor: `VariantIdx::from_u32(0)` -> `FIRST_VARIANT`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 705435f into rust-lang:master Mar 26, 2023
@rustbot rustbot added this to the 1.70.0 milestone Mar 26, 2023
@compiler-errors compiler-errors deleted the new-solver-still-further-specializable branch August 11, 2023 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants